package design_pattern.Singleton;

/**
 * @Author: 蔡翔
 * @Date: 2019/10/23 15:10
 * @Version 1.0
 * 这种方式既能保证懒加载，又能保证线程安全。而且能保证效率特别高。
 */
public class SingletonObject5 {
    private SingletonObject5(){

    }

    // static 特性在jvm加载的时候只会被运行一次，而且能严格保证 执行顺序。
    // 线程A 来调用instance 的时候就初始化成功了，并且后续调用getInstance() 都是使用的是同一份SingletonObject5();
    private static class InstanceHolder{
        private final static SingletonObject5 instance = new SingletonObject5();
    }

    public static SingletonObject5 getInstance(){
        return InstanceHolder.instance;
    }
}
